package com.sanyou.service;

import com.sanyou.pojo.Factory;
import com.sanyou.pojo.vo.FactoryVo;
import com.sanyou.utils.PagedResult;

import java.util.List;

/**
 * User: asus
 * Date: 2021/5/26
 * Time: 1:44
 * Version:V1.0
 */
public interface FactoryService {

    /**
     * 根据厂家名查找厂家
     * @param factoryName 厂家名
     * @param factoryName 上级id
     * @return
     */
    Factory findByName(String factoryName,String parentId);

    /**
     * 根据厂家id查找厂家
     * @param id 厂家id
     * @return
     */
    Factory findById(String id);

    /**
     * 新增厂家
     * @param factory 厂家
     */
    void addFactory(Factory factory);

    /**
     * 修改厂家信息
     * @param factory
     */
    void updateFactoryInfo(Factory factory);

    /**
     * 查询厂家
     * @param query
     * @param page
     * @param pageSize
     * @return
     */
    PagedResult query(String query, Integer page, Integer pageSize);

    PagedResult query(String query,String userId, Integer page, Integer pageSize);

    /**
     * 查询下级公司或部门
     * @param parentId
     * @return
     */
    List<Factory> querySubFactory(String parentId);

    /**
     * 查询id为parentId的工厂名下的用户具有数据访问权限的车间记录
     * 用户具有超管角色时查询该工厂下所有车间记录
     * @param parentId
     * @param userId 为空或者用户具有超管角色时查询全部
     * @return
     */
    List<Factory> querySubFactoryById(String parentId,String userId);
    /**
     * 查询所有厂家
     * @return
     */
    List<Factory> getAll();

    /**
     * 根据用户id查询用户有数据查看权限的车间
     * @param userId
     * @return
     */
    List<Factory> getUserEquipFactory(String userId);

    List<FactoryVo> getFactoryTree();

    /**
     * 根据用户id查询用户有数据查看权限的厂家
     * @param userId
     * @return
     */
    List<Factory> getFactory(String userId);

    /**
     * 根据用户id和厂家id查询用户有数据查看权限的车间
     * @param userId
     * @param factoryId
     * @return
     */
    List<Factory> getSubFactory(String userId, String factoryId);

    /**
     * 更新车间及车间所属设备地址
     * @param factory
     */
    void updateAddress(Factory factory);

    /**
     * 获取所有车间
     * @return
     */
    List<Factory> getAllSubFactory();

    List<Factory> getSubFactoryById(String factoryId);

}
